function formatTime(date) {
  //console.log(date)

  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()

  //console.log(111)


  return [month, day].map(formatNumber).join('-') + ' ' + [hour, minute].map(formatNumber).join(':')
}


function formatShortDate(date) {
  //console.log(date)

  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  //console.log(111)


  return [year, month, day].map(formatNumber).join('-');
}



// 判断日期大小函数
function compareDates(date1, date2) {

  try {
    console.log(date1, date2);
    // 统一转换为Date对象
    //const d1 = convertToDate(date1);
    //const d2 = convertToDate(date2);

    // 比较时间戳
    const time1 = date1.getTime();
    const time2 = date2.getTime();

    console.log("time1>time2");

    if (time1 >= time2) {
      console.log("time1>time2");
      return true;
    }
  } catch (err) {
    console.error(err)
  }


  return false;
}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

/** 
 * 时间戳转化为年 月 日 时 分 秒 
 * number: 传入时间戳 
 * format：返回格式，支持自定义，但参数必须与formateArr里保持一致 
 */
function formatTimeTwo(number, format) {

  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];
  // var date = new Date(number * 1000);
  var date = new Date(number);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));

  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}

function formatBrushDuration(time) {
  var theTime = time //时间戳(秒)
  var minute = 0; // 分
  var hour = 0; //小时
  if (theTime > 60) {
    minute = parseInt(theTime / 60);
    theTime = parseInt(theTime % 60);
    if (minute > 60) {
      hour = parseInt(minute / 60);
      middle = parseInt(minute % 60);
    }
  }
  var result = "" + parseInt(theTime) + "s"
  if (minute > 0) {
    result = "" + parseInt(minute) + "m" + result;
  }
  if (hour > 0) {
    result = "" + parseInt(hour) + "h" + result;
  }
  return result;
}


/**
 * 通过出生日期获取当前年龄
 * @param strBirthday：指的是出生日期，格式为"1990-01-01",字符串类型
 */
function getAgeByBirthDate(strBirthday) {
  console.log(strBirthday)
  try {
    // 将出生日期的字符串通过"-"分割成数组
    const strBirthdayArr = strBirthday.split("-")
    // 拿到出生日期的年
    const birthYear = strBirthdayArr[0]
    // 拿到出生日期的月
    const birthMonth = strBirthdayArr[1]
    // 拿到出生日期的日
    const birthDay = strBirthdayArr[2]
    // 创建一个时间对象
    const d = new Date()
    // 拿到当前时间的年
    const nowYear = d.getFullYear()
    // 拿到当前时间的月
    const nowMonth = d.getMonth() + 1
    // 拿到当前时间的日
    const nowDay = d.getDate()
    // 如果出生日期的年等于当前时间的年
    if (nowYear === birthYear) return 0 // 返回周岁年龄 0,并终止函数执行
    // 如果如果出生日期的年不等于于当前时间的年,则拿到年之差
    const ageDiff = nowYear - birthYear; // 年之差
    // 如果年之差是个负数,则表示用户输入的出生日期错误,晚于今天,返回 -1,并终止函数执行
    if (ageDiff < 0) return -1 // 返回错误 -1,并终止函数执行
    // 如果年之差是个正整数,但出生日期的月与当前时间的月不相等
    if (nowMonth !== birthMonth) {
      // 拿到出生日期的日与当前时间的月之差
      const monthDiff = nowMonth - birthMonth; // 月之差
      // 如果月之差是个负数,则年之差 - 1后得到周岁年龄,否则直接得到周岁年龄
      return monthDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
    }
    // 如果出生日期的月与当前时间的月相等,则拿到出生日期的日与当前时间的日之差
    const dayDiff = nowDay - birthDay;
    // 如果日之差是个负数,则年之差 - 1得到周岁年龄,否则直接得到周岁年龄
    return dayDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行
  } catch (e) {
    console.log(e)
  }

  return 0;

}

function numFix(value) {
  var v = parseFloat(value) //强转Int，毕竟有可能返回是String类型的数字
  return v.toFixed(4)
}


// 金额转换函数
function convertCurrency(n) {
  if (!n) {
    return '';
  }
  // 定义小数部分的单位（角、分）
  var fraction = ['角', '分'];
  // 定义数字0-9对应的中文大写
  var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
  // 定义整数部分的单位：
  // 第一层为量级单位（元、万、亿），第二层为位单位（拾、佰、仟）
  var unit = [
    ['元', '万', '亿'],
    ['', '拾', '佰', '仟']
  ];
  // 处理负数情况，若为负数则前缀为"负"，否则为空
  var flag = n < 0 ? '负' : '';
  // 将数字转为绝对值，后续统一处理正数
  n = Math.abs(n);
  // 用于存储转换后的字符串结果
  var result_string = '';
  // 处理小数部分（角和分）
  for (var i = 0; i < fraction.length; i++) {
    // 计算当前小数位的数字（角：n*10取整后模10，分：n*100取整后模10）
    // 拼接数字大写与对应单位（如"伍角"），并移除"零角"或"零分"的冗余表达
    result_string += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
  }
  // 若小数部分为空（无角分），则用"整"表示
  result_string = result_string || '整';
  // 截取整数部分（去除小数部分）
  n = Math.floor(n);
  // 处理整数部分，按"元、万、亿"量级循环
  for (var i = 0; i < unit[0].length && n > 0; i++) {
    // 存储当前量级（如万级）的转换结果
    var p = '';
    // 处理当前量级下的"拾、佰、仟"位
    for (var j = 0; j < unit[1].length && n > 0; j++) {
      // 从个位开始处理，拼接数字大写与位单位（如"壹佰"）
      p = digit[n % 10] + unit[1][j] + p;
      // 移除已处理的个位数字
      n = Math.floor(n / 10);
    }
    // 清理当前量级的冗余零（移除末尾连续的零，空值用"零"填充）
    // 拼接当前量级单位（如"万"）和之前的结果
    result_string = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + result_string;
  }
  // 返回最终结果，去除多余的“零”和“整”字
  return flag + result_string.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
}



module.exports = {
  getAgeByBirthDate: getAgeByBirthDate,
  formatTime: formatTime,
  formatTimeTwo: formatTimeTwo,
  formatBrushDuration: formatBrushDuration,
  formatShortDate: formatShortDate,
  compareDates: compareDates,
  moneyCh: convertCurrency,
  numFix: numFix,
}